/**
 * 
 */
package com.example.upload.response;

public final class ResponseResultFactory {

	/**
	 * 默认操作成功时的错误码(0)
	 */
	private static final int DEF_ERRCODE_SUCCESS = 0;

	/**
	 * 默认操作失败时的错误码(1)
	 */
	private static final int DEF_ERRCODE_FAIL = 1;

	/**
	 * 默认操作成功时的返回消息
	 */
	private static final String DEF_ERRMSG_SUCCESS = "success";

	/**
	 * 默认操作失败时的返回消息
	 */
	private static final String DEF_ERRMSG_FAIL = "fail";

	private ResponseResultFactory() {

	}

	/**
	 * 
	 * @Description: 用于构建响应结果的静态方法
	 * @param errCode
	 *            错误码，操作成功:0
	 * @param errMsg
	 *            错误消息
	 * @param data
	 *            要响应的数据
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> build(int errCode, String errMsg, T data) {
		return new ResponseResult<T>(errCode, errMsg, data);
	}

	/**
	 * 
	 * @Description: 用于构建响应结果的静态方法
	 * @param errCode
	 *            错误码，操作成功:0
	 * @param errMsg
	 *            错误消息
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> build(int errCode, String errMsg) {
		return build(errCode, errMsg, null);
	}
	/**
	 * 
	 * @Description: 用于构建成功响应结果的静态方法
	 * @param errMsg
	 *            错误消息
	 * @param data
	 *            要响应的数据
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> buildSuccessResponse(String errMsg, T data) {
		return new ResponseResult<T>(DEF_ERRCODE_SUCCESS, errMsg, data);
	}

	/**
	 *
	 * @Description: 用于构建成功响应结果的静态方法
	 * @param data
	 *            要响应的数据
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> buildSuccessResponse(T data) {
		return buildSuccessResponse(DEF_ERRMSG_SUCCESS, data);
	}

	/**
	 *
	 * @Description: 用于构建失败响应结果的静态方法
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> buildFailResponse() {
		return new ResponseResult<T>(DEF_ERRCODE_FAIL, DEF_ERRMSG_FAIL, null);
	}

	/**
	 *
	 * @Description: 用于构建失败响应结果的静态方法
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> buildFailResponse(String message) {
		return new ResponseResult<>(DEF_ERRCODE_FAIL, message, null);
	}

	/**
	 *
	 * @Description: 用于构建成功响应结果的静态方法
	 * @return ResponseResult<T>
	 */
	public static <T> ResponseResult<T> buildSuccessResponse() {
		return buildSuccessResponse(DEF_ERRMSG_SUCCESS, null);
	}

	
}
